home *** CD-ROM | disk | FTP | other *** search
-
-
-
- SSSSYYYYNNNNCCCC((((3333FFFF)))) SSSSYYYYNNNNCCCC((((3333FFFF))))
-
-
-
- NNNNAAAAMMMMEEEE
- sync: synchronize, fetch_and_add, fetch_and_sub, fetch_and_or,
- fetch_and_and, fetch_and_xor, fetch_and_nand, add_and_fetch,
- sub_and_fetch, or_and_fetch, and_and_fetch, xor_and_fetch,
- nand_and_fetch, lock_test_and_set, lock_release - FORTRAN synchronization
- primitives for multiprocessing
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- iiiinnnntttteeeeggggeeeerrrr****4444 iiii4444,,,, jjjj4444,,,, kkkk4444,,,, jjjjjjjj4444
- iiiinnnntttteeeeggggeeeerrrr****8888 iiii8888,,,, jjjj8888,,,, kkkk8888,,,, jjjjjjjj8888
- llllooooggggiiiiccccaaaallll****4444 llll4444
- llllooooggggiiiiccccaaaallll****8888 llll8888
-
- ccccaaaallllllll ssssyyyynnnncccchhhhrrrroooonnnniiiizzzzeeee
-
- iiii4444 ==== ffffeeeettttcccchhhh____aaaannnndddd____aaaadddddddd ((((jjjj4444,,,, kkkk4444))))
- iiii8888 ==== ffffeeeettttcccchhhh____aaaannnndddd____aaaadddddddd ((((jjjj8888,,,, kkkk8888))))
-
- iiii4444 ==== ffffeeeettttcccchhhh____aaaannnndddd____ssssuuuubbbb ((((jjjj4444,,,, kkkk4444))))
- iiii8888 ==== ffffeeeettttcccchhhh____aaaannnndddd____ssssuuuubbbb ((((jjjj8888,,,, kkkk8888))))
-
- iiii4444 ==== ffffeeeettttcccchhhh____aaaannnndddd____oooorrrr ((((jjjj4444,,,, kkkk4444))))
- iiii8888 ==== ffffeeeettttcccchhhh____aaaannnndddd____oooorrrr ((((jjjj8888,,,, kkkk8888))))
-
- iiii4444 ==== ffffeeeettttcccchhhh____aaaannnndddd____aaaannnndddd ((((jjjj4444,,,, kkkk4444))))
- iiii8888 ==== ffffeeeettttcccchhhh____aaaannnndddd____aaaannnndddd ((((jjjj8888,,,, kkkk8888))))
-
- iiii4444 ==== ffffeeeettttcccchhhh____aaaannnndddd____xxxxoooorrrr ((((jjjj4444,,,, kkkk4444))))
- iiii8888 ==== ffffeeeettttcccchhhh____aaaannnndddd____xxxxoooorrrr ((((jjjj8888,,,, kkkk8888))))
-
- iiii4444 ==== ffffeeeettttcccchhhh____aaaannnndddd____nnnnaaaannnndddd ((((jjjj4444,,,, kkkk4444))))
- iiii8888 ==== ffffeeeettttcccchhhh____aaaannnndddd____nnnnaaaannnndddd ((((jjjj8888,,,, kkkk8888))))
-
-
- iiii4444 ==== aaaadddddddd____aaaannnndddd____ffffeeeettttcccchhhh ((((jjjj4444,,,, kkkk4444))))
- iiii8888 ==== aaaadddddddd____aaaannnndddd____ffffeeeettttcccchhhh ((((jjjj8888,,,, kkkk8888))))
-
- iiii4444 ==== ssssuuuubbbb____aaaannnndddd____ffffeeeettttcccchhhh ((((jjjj4444,,,, kkkk4444))))
- iiii8888 ==== ssssuuuubbbb____aaaannnndddd____ffffeeeettttcccchhhh ((((jjjj8888,,,, kkkk8888))))
-
- iiii4444 ==== oooorrrr____aaaannnndddd____ffffeeeettttcccchhhh ((((jjjj4444,,,, kkkk4444))))
- iiii8888 ==== oooorrrr____aaaannnndddd____ffffeeeettttcccchhhh ((((jjjj8888,,,, kkkk8888))))
-
- iiii4444 ==== aaaannnndddd____aaaannnndddd____ffffeeeettttcccchhhh ((((jjjj4444,,,, kkkk4444))))
- iiii8888 ==== aaaannnndddd____aaaannnndddd____ffffeeeettttcccchhhh ((((jjjj8888,,,, kkkk8888))))
-
- iiii4444 ==== xxxxoooorrrr____aaaannnndddd____ffffeeeettttcccchhhh ((((jjjj4444,,,, kkkk4444))))
- iiii8888 ==== xxxxoooorrrr____aaaannnndddd____ffffeeeettttcccchhhh ((((jjjj8888,,,, kkkk8888))))
-
- iiii4444 ==== nnnnaaaannnndddd____aaaannnndddd____ffffeeeettttcccchhhh ((((jjjj4444,,,, kkkk4444))))
- iiii8888 ==== nnnnaaaannnndddd____aaaannnndddd____ffffeeeettttcccchhhh ((((jjjj8888,,,, kkkk8888))))
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- SSSSYYYYNNNNCCCC((((3333FFFF)))) SSSSYYYYNNNNCCCC((((3333FFFF))))
-
-
-
- llll4444 ==== ccccoooommmmppppaaaarrrreeee____aaaannnndddd____sssswwwwaaaapppp(((( jjjj4444,,,, kkkk4444,,,, jjjjjjjj4444))))
- llll8888 ==== ccccoooommmmppppaaaarrrreeee____aaaannnndddd____sssswwwwaaaapppp(((( jjjj8888,,,, kkkk8888,,,, jjjjjjjj8888))))
-
- iiii4444 ==== lllloooocccckkkk____tttteeeesssstttt____aaaannnndddd____sssseeeetttt ((((jjjj4444 ,,,, kkkk4444))))
- iiii8888 ==== lllloooocccckkkk____tttteeeesssstttt____aaaannnndddd____sssseeeetttt ((((jjjj8888 ,,,, kkkk8888))))
-
- ccccaaaallllllll lllloooocccckkkk____rrrreeeelllleeeeaaaasssseeee((((iiii4444))))
- ccccaaaallllllll lllloooocccckkkk____rrrreeeelllleeeeaaaasssseeee((((iiii8888))))
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- The intrinsics described here provide a variety of primitive
- synchronization operations. Besides performing the particular
- synchronization operation, each of these intrinsics has two key
- properties:
-
- The function performed is guaranteed to be atomic (typically achieved
- by implementing the operation using a sequence of load-linked/store-
- conditional instructions in a loop).
-
- Associated with each intrinsic are certain _m_e_m_o_r_y _b_a_r_r_i_e_r properties
- that restrict the movement of memory references to _v_i_s_i_b_l_e _d_a_t_a
- across the intrinsic operation (by either the compiler or the
- processor).
-
- A visible memory reference is a reference to a data object
- potentially accessible by another thread executing in the same shared
- address space. A visible data object may be one of the following:
-
- C/C++ global data
-
- Fortran COMMON data
-
- data declared _e_x_t_e_r_n
-
- volatile data
-
- static data (either file-scope or function-scope)
-
- data accessible via function parameters
-
- automatic data (local-scope) that has had its address taken and
- assigned to some object which is visible (recursively).
-
-
- The memory barrier semantics of an intrinsic may be one of the
- following three types:
-
- aaaaccccqqqquuuuiiiirrrreeee bbbbaaaarrrrrrrriiiieeeerrrr
-
- Disallows the movement of memory references to visible data from
- after the intrinsic (in program order) to before the intrinsic
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
- SSSSYYYYNNNNCCCC((((3333FFFF)))) SSSSYYYYNNNNCCCC((((3333FFFF))))
-
-
-
- (this behavior is desirable at lock-acquire operations, hence the
- name).
-
-
- rrrreeeelllleeeeaaaasssseeee bbbbaaaarrrrrrrriiiieeeerrrr
-
- Disallows the movement of memory references to visible data from
- before the intrinsic (in program order) to after the intrinsic
- (this behavior is desirable at lock-release operations, hence the
- name).
-
- ffffuuuullllllll bbbbaaaarrrrrrrriiiieeeerrrr
-
- Disallows the movement of memory references to visible data past
- the intrinsic (in either direction), and is thus both an acquire
- and a release barrier. A barrier only restricts the movement of
- memory references to visible data across the intrinsic operation:
- between synchronization operations (or in their absence), memory
- references to visible data may be freely reordered subject to the
- usual data-dependence constraints.
-
- CCCCaaaauuuuttttiiiioooonnnn:::: Conditional execution of a synchronization intrinsic (such as
- within a _i_f or a _w_h_i_l_e statement) does not prevent the movement of memory
- references to visible data past the overall _i_f or _w_h_i_l_e construct.
-
-
- AAAAttttoooommmmiiiicccc ffffeeeettttcccchhhh----aaaannnndddd----oooopppp OOOOppppeeeerrrraaaattttiiiioooonnnnssss
-
- ffffeeeettttcccchhhh____aaaannnndddd____aaaadddddddd,,,, ffffeeeettttcccchhhh____aaaannnndddd____ssssuuuubbbb,,,, ffffeeeettttcccchhhh____aaaannnndddd____oooorrrr,,,, ffffeeeettttcccchhhh____aaaannnndddd____aaaannnndddd,,,, ffffeeeettttcccchhhh____aaaannnndddd____xxxxoooorrrr
- and ffffeeeettttcccchhhh____aaaannnndddd____nnnnaaaannnndddd atomically perform the specified operation with the
- second operand on the first, and return the old value of the first
- operand. These intrinsics have full barrier memory semantics. IIIInnnntttteeeeggggeeeerrrr****4444
- and IIIInnnntttteeeeggggeeeerrrr****8888 specific versions of these intrinsics carry the ____33332222 and ____66664444
- suffix on the intrinsic name.
-
-
-
- AAAAttttoooommmmiiiicccc oooopppp----aaaannnndddd----ffffeeeettttcccchhhh OOOOppppeeeerrrraaaattttiiiioooonnnnssss
-
- aaaadddddddd____aaaannnndddd____ffffeeeettttcccchhhh,,,, ssssuuuubbbb____aaaannnndddd____ffffeeeettttcccchhhh,,,, oooorrrr____aaaannnndddd____ffffeeeettttcccchhhh,,,, aaaannnndddd____aaaannnndddd____ffffeeeettttcccchhhh,,,, xxxxoooorrrr____aaaannnndddd____ffffeeeettttcccchhhh
- and nnnnaaaannnndddd____aaaannnndddd____ffffeeeettttcccchhhh atomically perform the specified operation with the
- second operand on the first, and return the new value of the first
- operand. These intrinics have full barrier memory semantics. IIIInnnntttteeeeggggeeeerrrr****4444
- and IIIInnnntttteeeeggggeeeerrrr****8888 specific versions of these intrinsics carry the ____33332222 and ____66664444
- suffix on the intrinsic name.
-
-
- AAAAttttoooommmmiiiicccc ccccoooommmmppppaaaarrrreeee----aaaannnndddd----sssswwwwaaaapppp OOOOppppeeeerrrraaaattttiiiioooonnnn
-
- The ccccoooommmmppppaaaarrrreeee____aaaannnndddd____sssswwwwaaaapppp intrinsics atomically compare the value of the first
- operand to the value of the second. If they are equal, the intrinsics
- store the value of the third operand into the first operand and return
-
-
-
- PPPPaaaaggggeeee 3333
-
-
-
-
-
-
- SSSSYYYYNNNNCCCC((((3333FFFF)))) SSSSYYYYNNNNCCCC((((3333FFFF))))
-
-
-
- TTTTRRRRUUUUEEEE.... Otherwise, they return FFFFAAAALLLLSSSSEEEE.... These intrinics have full barrier
- memory semantics. IIIInnnntttteeeeggggeeeerrrr****4444 and IIIInnnntttteeeeggggeeeerrrr****8888 specific versions of these
- intrinsics carry the ____33332222 and ____66664444 suffix on the intrinsic name.
-
-
-
- AAAAttttoooommmmiiiicccc ssssyyyynnnncccchhhhrrrroooonnnniiiizzzzeeee OOOOppppeeeerrrraaaattttiiiioooonnnn
-
- The ssssyyyynnnncccchhhhrrrroooonnnniiiizzzzeeee intrinsic has full barrier memory semantics.
-
-
- AAAAttttoooommmmiiiicccc lllloooocccckkkk----tttteeeesssstttt----aaaannnndddd----sssseeeetttt OOOOppppeeeerrrraaaattttiiiioooonnnn
-
- The lllloooocccckkkk____tttteeeesssstttt____aaaannnndddd____sssseeeetttt intrinsics atomically store the value of the second
- operand into the first and return the old value of the first operand.
- They have acquire barrier memory semantics. IIIInnnntttteeeeggggeeeerrrr****4444 and IIIInnnntttteeeeggggeeeerrrr****8888
- specific versions of these intrinsics carry the ____33332222 and ____66664444 suffix on the
- intrinsic name.
-
-
- AAAAttttoooommmmiiiicccc lllloooocccckkkk____rrrreeeelllleeeeaaaasssseeee OOOOppppeeeerrrraaaattttiiiioooonnnn
-
- The lllloooocccckkkk____rrrreeeelllleeeeaaaasssseeee intrinsics set the first operand to zero. They have
- release barrier memory semantics. IIIInnnntttteeeeggggeeeerrrr****4444 and IIIInnnntttteeeeggggeeeerrrr****8888 specific
- versions of these intrinsics carry the ____33332222 and ____66664444 suffix on the
- intrinsic name.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 4444
-
-
-
-